﻿package mortal.game.view.wizard.panel
{
    import Message.DB.Tables.*;
    import Message.Public.*;
    import __AS3__.vec.*;
    import mortal.component.gconst.*;
    import mortal.game.cache.*;
    import mortal.game.resource.info.item.*;
    import mortal.game.resource.tableConfig.*;
    import mortal.game.view.common.util.*;
    import mortal.game.view.wizard.data.*;

    public class WizardUtil extends Object
    {

        public function WizardUtil()
        {
            return;
        }// end function

        public function get canUpgradeWizardData() : WizardData
        {
            var _loc_1:WizardData = null;
            var _loc_3:WizardData = null;
            var _loc_4:TSpriteEx = null;
            var _loc_5:ItemData = null;
            var _loc_6:int = 0;
            var _loc_2:* = Cache.instance.wizard.soulList;
            for each (_loc_3 in _loc_2)
            {
                
                if (_loc_3.isHasWizard)
                {
                    _loc_4 = WizardConfig.instance.getTSpriteExByCodeAndStar(_loc_3.code, (_loc_3.spriteInfo.skillCode + 1));
                    _loc_5 = new ItemData(_loc_4.prop);
                    _loc_6 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_4.prop);
                    if (_loc_6 >= _loc_4.amount)
                    {
                        _loc_1 = _loc_3;
                        break;
                    }
                }
            }
            return _loc_1;
        }// end function

        public function get canActiveWizardData() : WizardData
        {
            var _loc_1:WizardData = null;
            var _loc_3:WizardData = null;
            var _loc_4:TSpriteEx = null;
            var _loc_5:ItemData = null;
            var _loc_6:int = 0;
            var _loc_2:* = Cache.instance.wizard.soulList;
            for each (_loc_3 in _loc_2)
            {
                
                if (!_loc_3.isHasWizard)
                {
                    _loc_4 = WizardConfig.instance.getTSpriteExByCodeAndStar(_loc_3.code, 1);
                    _loc_5 = new ItemData(_loc_4.prop);
                    _loc_6 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_4.prop);
                    if (_loc_6 >= _loc_4.amount)
                    {
                        _loc_1 = _loc_3;
                        break;
                    }
                }
            }
            return _loc_1;
        }// end function

        public static function get maxLevel() : int
        {
            return 20;
        }// end function

        public static function getWizardCombatByCode(param1:int) : int
        {
            var _loc_5:Number = NaN;
            var _loc_7:int = 0;
            var _loc_8:Array = null;
            var _loc_9:TSprite = null;
            var _loc_10:String = null;
            var _loc_11:int = 0;
            var _loc_12:ItemData = null;
            var _loc_2:* = MountConfig.instance.attribute;
            var _loc_3:* = Cache.instance.wizard.getWizardDataByCode(param1);
            var _loc_4:Number = 0;
            if (_loc_3.isHasWizard)
            {
                _loc_7 = _loc_3.spriteInfo.SpriteLevel;
                _loc_8 = Cache.instance.pack.getWizardPackCacheByCode(param1).allItems;
                for each (_loc_10 in _loc_2)
                {
                    
                    _loc_5 = 0;
                    _loc_11 = 0;
                    while (_loc_11 <= _loc_7)
                    {
                        
                        _loc_9 = WizardConfig.instance.getSpriteByCodeAndLevel(param1, _loc_11);
                        if (_loc_11 == 0)
                        {
                            _loc_5 = _loc_5 + int(_loc_9[_loc_10]);
                        }
                        else if (_loc_11 < _loc_7)
                        {
                            _loc_5 = _loc_5 + int(_loc_9[_loc_10]) * 10;
                        }
                        else
                        {
                            _loc_5 = _loc_5 + int(_loc_9[_loc_10]) * _loc_3.spriteInfo.AcupointIndex;
                        }
                        _loc_11++;
                    }
                    for each (_loc_12 in _loc_8)
                    {
                        
                        if (_loc_12)
                        {
                            _loc_5 = _loc_5 + _loc_12.itemInfo[_loc_10];
                        }
                    }
                    _loc_5 = CombatUtil.getCombatValueByName(_loc_10, int(_loc_5));
                    _loc_4 = _loc_4 + _loc_5;
                }
            }
            var _loc_6:* = SkillConfig.instance.getInfoById(_loc_3.tSpriteEx.xpskillId);
            return _loc_4 + _loc_6.combat;
        }// end function

        public static function getWizardAttrValueByCodeAndName(param1:int, param2:String) : int
        {
            var _loc_5:int = 0;
            var _loc_6:Array = null;
            var _loc_7:TSprite = null;
            var _loc_8:int = 0;
            var _loc_9:ItemData = null;
            var _loc_3:* = Cache.instance.wizard.getWizardDataByCode(param1);
            var _loc_4:Number = 0;
            if (_loc_3.isHasWizard)
            {
                _loc_5 = _loc_3.spriteInfo.SpriteLevel;
                _loc_6 = Cache.instance.pack.getWizardPackCacheByCode(param1).allItems;
                _loc_8 = 0;
                while (_loc_8 <= _loc_5)
                {
                    
                    _loc_7 = WizardConfig.instance.getSpriteByCodeAndLevel(param1, _loc_8);
                    if (_loc_8 == 0)
                    {
                        _loc_4 = _loc_4 + int(_loc_7[param2]);
                    }
                    else if (_loc_8 < _loc_5)
                    {
                        _loc_4 = _loc_4 + int(_loc_7[param2]) * 10;
                    }
                    else
                    {
                        _loc_4 = _loc_4 + int(_loc_7[param2]) * _loc_3.spriteInfo.AcupointIndex;
                    }
                    _loc_8++;
                }
                for each (_loc_9 in _loc_6)
                {
                    
                    if (_loc_9)
                    {
                        _loc_4 = _loc_4 + _loc_9.itemInfo[param2];
                    }
                }
            }
            return _loc_4;
        }// end function

        public static function getNextAddWizadCombatByCode(param1:int) : int
        {
            var _loc_6:Number = NaN;
            var _loc_7:String = null;
            var _loc_2:* = MountConfig.instance.attribute;
            var _loc_3:* = Cache.instance.wizard.getWizardDataByCode(param1);
            var _loc_4:* = _loc_3.tSprite;
            var _loc_5:Number = 0;
            for each (_loc_7 in _loc_2)
            {
                
                _loc_6 = 0;
                _loc_6 = _loc_6 + _loc_4[_loc_7];
                _loc_6 = CombatUtil.getCombatValueByName(_loc_7, _loc_6);
                _loc_5 = _loc_5 + _loc_6;
            }
            return int(_loc_5);
        }// end function

        public static function get isEnoughToLevelUp() : Boolean
        {
            var _loc_1:WizardData = null;
            var _loc_4:WizardData = null;
            var _loc_2:* = Cache.instance.wizard.soulList;
            var _loc_3:* = Cache.instance.role.getMoneyByType(EPriceUnit._EPriceUnitVitalEnergy);
            for each (_loc_4 in _loc_2)
            {
                
                if (_loc_4.isHasWizard)
                {
                    if (_loc_1 == null || _loc_4.spriteInfo.SpriteLevel < _loc_1.spriteInfo.SpriteLevel)
                    {
                        _loc_1 = _loc_4;
                    }
                }
            }
            if (_loc_1 && _loc_1.spriteInfo.SpriteLevel < maxLevel)
            {
                if (_loc_3 >= _loc_1.tSprite.vitalenergy)
                {
                    if (Cache.instance.role.enoughMoney(EPriceUnit._EPriceUnitCoinBind, _loc_1.tSprite.coin))
                    {
                        return true;
                    }
                }
            }
            return false;
        }// end function

        public static function get canAdvancedWizardData() : WizardData
        {
            var _loc_1:WizardData = null;
            var _loc_4:Number = NaN;
            var _loc_5:Number = NaN;
            var _loc_6:WizardData = null;
            var _loc_2:* = Cache.instance.wizard.soulList;
            var _loc_3:* = Cache.instance.role.getMoneyByType(EPriceUnit._EPriceUnitVitalEnergy);
            for each (_loc_6 in _loc_2)
            {
                
                if (_loc_6.isHasWizard)
                {
                    if (_loc_6.spriteInfo.SpriteLevel < maxLevel)
                    {
                        if (_loc_3 > _loc_6.tSprite.vitalenergy && Cache.instance.role.enoughMoney(EPriceUnit._EPriceUnitCoinBind, _loc_6.tSprite.coin))
                        {
                            _loc_4 = _loc_6.tSprite.life / _loc_6.tSprite.vitalenergy;
                            if (_loc_1 == null || _loc_5 < _loc_4)
                            {
                                _loc_5 = _loc_4;
                                _loc_1 = _loc_6;
                            }
                        }
                    }
                }
            }
            return _loc_1;
        }// end function

        public static function get canOperWizardData() : Object
        {
            var _loc_1:WizardData = null;
            var _loc_2:WizardData = null;
            var _loc_3:WizardData = null;
            var _loc_4:WizardData = null;
            var _loc_5:TSpriteEx = null;
            var _loc_6:ItemData = null;
            var _loc_7:int = 0;
            var _loc_10:Number = NaN;
            var _loc_11:Number = NaN;
            var _loc_12:WizardData = null;
            var _loc_13:int = 0;
            var _loc_8:* = Cache.instance.wizard.soulList;
            var _loc_9:* = Cache.instance.role.getMoneyByType(EPriceUnit._EPriceUnitVitalEnergy);
            for each (_loc_12 in _loc_8)
            {
                
                if (_loc_12.isHasWizard)
                {
                    if (_loc_12.spriteInfo.SpriteLevel < maxLevel)
                    {
                        if (_loc_9 > _loc_12.tSprite.vitalenergy && Cache.instance.role.enoughMoney(EPriceUnit._EPriceUnitCoinBind, _loc_12.tSprite.coin))
                        {
                            _loc_10 = _loc_12.tSprite.life / _loc_12.tSprite.vitalenergy;
                            if (_loc_1 == null || _loc_11 < _loc_10)
                            {
                                _loc_11 = _loc_10;
                                _loc_1 = _loc_12;
                            }
                        }
                    }
                    if (_loc_2 == null)
                    {
                        if (!_loc_12.isMaxStar)
                        {
                            _loc_5 = WizardConfig.instance.getTSpriteExByCodeAndStar(_loc_12.code, (_loc_12.spriteInfo.skillCode + 1));
                            _loc_6 = new ItemData(_loc_5.prop);
                            _loc_7 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_5.prop);
                            if (_loc_7 >= _loc_5.amount)
                            {
                                _loc_2 = _loc_12;
                            }
                        }
                    }
                    continue;
                }
                if (_loc_3 == null)
                {
                    _loc_5 = WizardConfig.instance.getTSpriteExByCodeAndStar(_loc_12.code, 1);
                    _loc_6 = new ItemData(_loc_5.prop);
                    _loc_7 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_5.prop);
                    if (_loc_7 >= _loc_5.amount)
                    {
                        _loc_3 = _loc_12;
                    }
                }
            }
            if (_loc_3)
            {
                _loc_4 = _loc_3;
                _loc_13 = 1;
            }
            else if (_loc_2)
            {
                _loc_4 = _loc_2;
                _loc_13 = 2;
            }
            else if (_loc_1)
            {
                _loc_4 = _loc_1;
                _loc_13 = 3;
            }
            var _loc_14:Object = {data:_loc_4, type:_loc_13};
            return _loc_14;
        }// end function

        public static function isCanLevelUpByCode(param1:int) : Boolean
        {
            var _loc_2:* = Cache.instance.wizard.getWizardDataByCode(param1);
            if (_loc_2.isHasWizard && _loc_2.spriteInfo.SpriteLevel < maxLevel)
            {
                if (Cache.instance.role.enoughMoney(EPriceUnit._EPriceUnitVitalEnergy, _loc_2.tSprite.vitalenergy))
                {
                    if (Cache.instance.role.enoughMoney(EPriceUnit._EPriceUnitCoinBind, _loc_2.tSprite.coin))
                    {
                        return true;
                    }
                }
            }
            return false;
        }// end function

        public static function isCanAdvanceByCode(param1:int) : Boolean
        {
            var _loc_3:Boolean = false;
            var _loc_4:TSpriteEx = null;
            var _loc_5:int = 0;
            var _loc_2:* = Cache.instance.wizard.getWizardDataByCode(param1);
            if (_loc_2.isHasWizard)
            {
                if (!_loc_2.isMaxStar)
                {
                    _loc_4 = WizardConfig.instance.getTSpriteExByCodeAndStar(_loc_2.code, (_loc_2.spriteInfo.skillCode + 1));
                    _loc_5 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_4.prop);
                    if (_loc_5 >= _loc_4.amount)
                    {
                        _loc_3 = true;
                    }
                }
            }
            return _loc_3;
        }// end function

        public static function isCanActiveByCode(param1:int) : Boolean
        {
            var _loc_3:Boolean = false;
            var _loc_4:TSpriteEx = null;
            var _loc_5:int = 0;
            var _loc_2:* = Cache.instance.wizard.getWizardDataByCode(param1);
            if (!_loc_2.isHasWizard)
            {
                if (!_loc_2.isMaxStar)
                {
                    _loc_4 = _loc_2.tSpriteEx;
                    _loc_5 = Cache.instance.pack.backPackCache.getItemCountByItemCode(_loc_4.prop);
                    if (_loc_5 >= _loc_4.amount)
                    {
                        _loc_3 = true;
                    }
                }
            }
            return _loc_3;
        }// end function

        public static function getWizardDataBySkillId(param1:int) : WizardData
        {
            var _loc_4:int = 0;
            var _loc_5:WizardData = null;
            var _loc_6:int = 0;
            var _loc_2:* = Cache.instance.wizard.soulList;
            var _loc_3:Array = [];
            if (_loc_2 != null)
            {
                _loc_4 = 0;
                while (_loc_4 < _loc_2.length)
                {
                    
                    _loc_5 = _loc_2[_loc_4];
                    if (!_loc_5.isHasWizard)
                    {
                    }
                    else
                    {
                        _loc_6 = _loc_5.tSpriteEx.xpskillId;
                        if (param1 == _loc_6)
                        {
                            return _loc_5;
                        }
                    }
                    _loc_4++;
                }
            }
            return null;
        }// end function

        public static function get maxAnger() : int
        {
            var _loc_1:* = GameConst.MaxAnger;
            var _loc_2:* = Cache.instance.buff.getBuffTypeValue(EBuffType._EBuffTypeIncOrDeAngerMax);
            return _loc_1 + _loc_2;
        }// end function

        public static function isEnoughLevelToEquip(param1:ItemData) : Boolean
        {
            var _loc_2:* = Cache.instance.wizard.getWizardDataByCode(param1.itemInfo.effectEx);
            return Boolean(param1.itemInfo.level <= _loc_2.spriteInfo.SpriteLevel);
        }// end function

    }
}
